package com.jpress.model;

import java.util.Calendar;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
public class Blog {
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private int id;
	@Column(unique=true, nullable=false)
	private String nome;
	private String titulo;
	private String descricao;
	private String avatar;
	@ManyToOne
	private Admin dono;
	@Temporal(TemporalType.TIMESTAMP)
	private Calendar dataCriacao;
	@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="blog")
	private List<Post> posts;
	@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="blog")
	private List<CustomPage> customPages;
	@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="blog")
	private List<Categoria> categorias;
	
	public Blog(){}

	public Blog(String nome, String titulo, Admin dono, Calendar dataCriacao) {
		super();
		this.nome = nome;
		this.titulo = titulo;
		this.dono = dono;
		this.dataCriacao = dataCriacao;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getTitulo() {
		return titulo;
	}

	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public String getAvatar() {
		return avatar;
	}

	public void setAvatar(String avatar) {
		this.avatar = avatar;
	}

	public Usuario getDono() {
		return dono;
	}

	public void setDono(Admin dono) {
		this.dono = dono;
	}
	
	public String getNomeDono(){
		return this.dono.getNome();
	}

	public List<Post> getPosts() {
		return posts;
	}

	public void setPosts(List<Post> posts) {
		this.posts = posts;
	}
	
	public void adicionarPost(Post post){
		this.posts.add(post);
	}

	public List<CustomPage> getCustomPages() {
		return customPages;
	}

	public void setCustomPages(List<CustomPage> customPages) {
		this.customPages = customPages;
	}
	
	public void adicionarCustomPage(CustomPage customPage){
		this.customPages.add(customPage);
	}

	public Calendar getDataCriacao() {
		return dataCriacao;
	}

	public void setDataCriacao(Calendar dataCriacao) {
		this.dataCriacao = dataCriacao;
	}
	
	public List<Categoria> getCategorias() {
		return categorias;
	}

	public void setCategorias(List<Categoria> categorias) {
		this.categorias = categorias;
	}

	public void adicionarCategoria(Categoria categoria){
		this.categorias.add(categoria);
	}
	
	public Categoria getCategoriaById(int id){
		return this.categorias.get(id);
	}

	@Override
	public String toString() {
		return "Blog [id=" + id + ", nome=" + nome + ", titulo=" + titulo
				+ ", descricao=" + descricao + ", avatar=" + avatar + ", dono="
				+ dono + ", dataCriacao=" + dataCriacao + ", posts=" + posts
				+ ", customPages=" + customPages + ", categorias=" + categorias
				+ "]";
	}

}
